import { ref } from 'vue'
import { ElMessage } from 'element-plus'
import { useApi } from './useApi.js'
import apiService from '../services/api.js'

/**
 * 用户认证管理Hook
 * 处理登录状态、用户信息和认证相关逻辑
 */
export function useAuth() {
  // 登录状态
  const isLoggedIn = ref(false)
  const userInfo = ref(null)

  const { login, getUserInfo, logout } = useApi()

  /**
   * 检查登录状态
   * 从localStorage读取token和用户信息，验证登录状态
   */
  const checkLoginStatus = () => {
    const token = localStorage.getItem('token')
    const storedUserInfo = localStorage.getItem('userInfo')
    
    if (token && storedUserInfo) {
      try {
        userInfo.value = JSON.parse(storedUserInfo)
        isLoggedIn.value = true
        // 重要：设置API请求的认证头
        apiService.setAuthToken(token)
      } catch (error) {
        handleLogout()
      }
    } else {
      isLoggedIn.value = false
      userInfo.value = null
      // 清除认证头
      apiService.setAuthToken(null)
    }
  }

  /**
   * 处理登录成功
   * 更新登录状态并显示成功消息
   */
  const handleLoginSuccess = () => {
    checkLoginStatus()
    ElMessage.success('登录成功')
  }

  /**
   * 处理退出登录
   * 清除认证信息并更新状态
   */
  const handleLogout = () => {
    logout()
    // 清除认证头
    apiService.setAuthToken(null)
    isLoggedIn.value = false
    userInfo.value = null
    ElMessage.success('已退出登录')
  }

  return {
    // 状态
    isLoggedIn,
    userInfo,
    
    // 方法
    checkLoginStatus,
    handleLoginSuccess,
    handleLogout
  }
}